#pragma once

#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
class QueryIMUData {
 private:
  friend class boost::serialization::access;
  bool with_Time, with_Acceleration, with_AngularVelocity, with_AngleOutput,
      with_MagneticOutput, with_PortStatusDataOutput,
      with_PressureAndHeightOutput, with_QuaternionOutput, with_Temperature;
  template <class Archive>
  void serialization(Archive &ar, const unsigned int version) {
    ar &with_Time;
    ar &with_Acceleration;
    ar &with_AngularVelocity;
    ar &with_AngleOutput;
    ar &with_MagneticOutput;
    ar &with_PortStatusDataOutput;
    ar &with_PressureAndHeightOutput;
    ar &with_QuaternionOutput;
    ar &with_Temperature;
  }

 public:
  QueryIMUData() {}
  QueryIMUData(bool _with_Time, bool _with_Acceleration,
               bool _with_AngularVelocity, bool _with_AngleOutput,
               bool _with_MagneticOutput, bool _with_PortStatusDataOutput,
               bool _with_PressureAndHeightOutput, bool _with_QuaternionOutput,
               bool _with_Temperature)
      : with_Time(_with_Time),
        with_Acceleration(_with_Acceleration),
        with_AngleOutput(_with_AngleOutput),
        with_AngularVelocity(_with_AngularVelocity),
        with_MagneticOutput(_with_MagneticOutput),
        with_PortStatusDataOutput(_with_PortStatusDataOutput),
        with_PressureAndHeightOutput(_with_PressureAndHeightOutput),
        with_QuaternionOutput(_with_QuaternionOutput),
        with_Temperature(_with_Temperature) {}
  void set_with_Time(bool s) { with_Time = s; }
  void set_with_Acceleration(bool s) { with_Acceleration = s; }
  void set_with_AngularVelocity(bool s) { with_AngularVelocity = s; }
  void set_with_AngleOutput(bool s) { with_AngleOutput = s; }
  void set_with_MagneticOutput(bool s) { with_MagneticOutput = s; }
  void set_with_PortStatusDataOutput(bool s) { with_PortStatusDataOutput = s; }
  void set_with_PressureAndHeightOutput(bool s) {
    with_PressureAndHeightOutput = s;
  }
  void set_with_QuaternionOutput(bool s) { with_QuaternionOutput = s; }
  void set_with_Temperature(bool s) { with_Temperature = s; }

  bool get_with_Time() { return with_Time; }
  bool get_with_Acceleration() { return with_Acceleration; }
  bool get_with_AngularVelocity() { return with_AngularVelocity; }
  bool get_with_AngleOutput() { return with_AngleOutput; }
  bool get_with_MagneticOutput() { return with_MagneticOutput; }
  bool get_with_PortStatusDataOutput() { return with_PortStatusDataOutput; }
  bool get_with_PressureAndHeightOutput() {
    return with_PressureAndHeightOutput;
  }
  bool get_with_QuaternionOutput() { return with_QuaternionOutput; }
  bool get_with_Temperature() { return with_Temperature; }
};